#ifndef PREY_STATES_H
#define PREY_STATES_H

#include "State/State.h"
#include "Entity/Game/Prey.h"

//Wander
class PreyStateWander : public State<Prey>
{
private:
	PreyStateWander() {}
	PreyStateWander(const PreyStateWander&) {}
	PreyStateWander& operator=(const PreyStateWander&){}

	virtual ~PreyStateWander() {};

public:
	static PreyStateWander* GetInstance();

	virtual void Enter(Prey* p);
	virtual void Execute(Prey* p);
	virtual void Exit(Prey* p);

	virtual bool OnMessage(Prey* p, const Message& m);
};


//Evade
class PreyStateEvade : public State<Prey>
{
private:
	PreyStateEvade() {}
	PreyStateEvade(const PreyStateEvade&) {}
	PreyStateEvade& operator=(const PreyStateEvade&){}

	virtual ~PreyStateEvade() {};

public:
	static PreyStateEvade* GetInstance();

	virtual void Enter(Prey* p);
	virtual void Execute(Prey* p);
	virtual void Exit(Prey* p);

	virtual bool OnMessage(Prey* p, const Message& m);
};








#endif